#ifndef COINBUTTON_H
#define COINBUTTON_H

#include <QDebug>
#include <QSound>
#include <QTimer>
#include <QWidget>
#include <QPushButton>

#include "constant.h"

class CoinButton : public QPushButton
{
    Q_OBJECT
public:
    explicit CoinButton(int x, int y, bool is_gold);

    ~CoinButton();

signals:

private:
    // true 为金面, false 为银面
    bool is_gold;

    // 硬币的功能是否结束
    bool is_finish = false;

    // 硬币的开始和结束图片编号
    int start;
    int end;

    // 硬币翻转需要的定时器
    QTimer *timer;

    // 金币的图片路径
    QString gold_coin_image_pathname;

    // 银币的图片路径
    QString silver_coin_image_pathname;

    // 硬币通用的图片路径
    QString general_coin_image_pathname;

public:
    // 硬币的横纵坐标
    int x;
    int y;

    // 是否处于动画阶段
    bool is_animation = false;

private:
    // 当前类的全部事件
    virtual bool event(QEvent *) override;

    // 鼠标按下事件
    void mousePressEvent(QMouseEvent *) override;

    // 鼠标释放事件
    void mouseReleaseEvent(QMouseEvent *) override;

private:
    // 设置按钮图片
    void setButtonImage(QString image_pathname);

public:
    // 结束硬币的功能
    void finish();

    // 获取硬币的状态
    bool getCoinState();

    // 硬币翻转
    void flipCoin(int time);
};

#endif // COINBUTTON_H
